import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'
import createPersistedState from 'vuex-persistedstate'


Vue.use(Vuex)

let state={
  token:'',
  address:'北京市',
  weather:{}
}

//异步操作地方（不可以修改state中的数据）
let actions={
  findWeather(ctx,arg){
    axios.get(`http://wthrcdn.etouch.cn/weather_mini?city=${arg}`).then(res=>{
      console.log(res.data)
      ctx.commit('saveWeather',res.data)
    })
  }
  }
  



// 唯一 修改state数据的地方
let mutations={
  setToken(state,arg){
    state.token=arg;
  },
  changeAddress(state,arg){
    state.address=arg;
  },
  saveWeather(state,arg){
      state.weather=arg;
  }
}
//相当于计算属性（对state中的数据进行计算）
let getters = {
   second(state,arg){
       let obj={}
       try{
        obj.city= state.weather.data.city;
        obj.wudu=state.weather.data.wendu;
       }catch(e){
        //  throw Error(e);
         obj={city:'未知',wendu:'未知'}
       }
     
     return obj;
   }
}

//user模块（统一管理用户相关数据）
let user={
  namespaced:true,//开启命名空间
   state:{
     username:'kity',
     avotar:'',
     starage:'',
     jifen:''
   },
   actions:{},
   mutations:{
     fnuser(state,arg){
       state.username=arg
     }
   },
   getters:{
     namekity(state){
      return state.username+'$'
     }
   }
}
//shop模块 （商品信息相关数据）
let shop={
  namespaced:true,
  state:{
   shopList:[],
   itemId:'123456',
   cart:[]
  },
  actions:{},
  mutaions:{},
  getters:{}
}



let store= new Vuex.Store({
  state,
  mutations,
  actions,
  getters,
  modules:{
    user,
    shop
  },
  plugins: [createPersistedState({
    storage: localStorage,
    key: "vuex"
  })]//会自动保存创建的状态。刷新还在
})

export default store;
